Análisis de fraudes con tarjeta de crédito


Fecha de creación: 18/05/2022

Grupo: fraud detection (2)

Integrantes:

  • Maria Mercedes Silva
  • Agustin Trulli
  • Ary Lautaro Di Bartolo
  • Ernesto Romero

Resumen

Como científicos de datos fuimos contradados por una consultora externa a una plataforma de compras online para analizar los fraudes realizados con tarjeta de crédito en las transacciones dentro de la plataforma. Esta consultora tiene acceso a los datos de forma parcial, dado que por su caracter externo y por acuerdos de confidencialidad no pueden distribuir el detalle de las variables originales con personas ajenas a la empresa. La consultora nos contrata con el objetivo de que puedan realizar su mejor trabajo con esta información parcial y dispersa.

El objetivo del presente notebook es realizar la exploración y análisis los datos facilitados sobre fraudes de pagos con tarjeta de crédito.

Análisis integral¶

Cantidad de filas: 284807
Cantidad de columnas: 31
sample con 5 ejemplos
Time V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 Amount Class
0 0.0 -1.359807 -0.072781 2.536347 1.378155 -0.338321 0.462388 0.239599 0.098698 0.363787 0.090794 -0.551600 -0.617801 -0.991390 -0.311169 1.468177 -0.470401 0.207971 0.025791 0.403993 0.251412 -0.018307 0.277838 -0.110474 0.066928 0.128539 -0.189115 0.133558 -0.021053 149.62 0
1 0.0 1.191857 0.266151 0.166480 0.448154 0.060018 -0.082361 -0.078803 0.085102 -0.255425 -0.166974 1.612727 1.065235 0.489095 -0.143772 0.635558 0.463917 -0.114805 -0.183361 -0.145783 -0.069083 -0.225775 -0.638672 0.101288 -0.339846 0.167170 0.125895 -0.008983 0.014724 2.69 0
2 1.0 -1.358354 -1.340163 1.773209 0.379780 -0.503198 1.800499 0.791461 0.247676 -1.514654 0.207643 0.624501 0.066084 0.717293 -0.165946 2.345865 -2.890083 1.109969 -0.121359 -2.261857 0.524980 0.247998 0.771679 0.909412 -0.689281 -0.327642 -0.139097 -0.055353 -0.059752 378.66 0
3 1.0 -0.966272 -0.185226 1.792993 -0.863291 -0.010309 1.247203 0.237609 0.377436 -1.387024 -0.054952 -0.226487 0.178228 0.507757 -0.287924 -0.631418 -1.059647 -0.684093 1.965775 -1.232622 -0.208038 -0.108300 0.005274 -0.190321 -1.175575 0.647376 -0.221929 0.062723 0.061458 123.50 0
4 2.0 -1.158233 0.877737 1.548718 0.403034 -0.407193 0.095921 0.592941 -0.270533 0.817739 0.753074 -0.822843 0.538196 1.345852 -1.119670 0.175121 -0.451449 -0.237033 -0.038195 0.803487 0.408542 -0.009431 0.798278 -0.137458 0.141267 -0.206010 0.502292 0.219422 0.215153 69.99 0

Tipo de datos¶

tipo_de_dato
columna
Time float64
V1 float64
V2 float64
V3 float64
V4 float64
V5 float64
V6 float64
V7 float64
V8 float64
V9 float64
V10 float64
V11 float64
V12 float64
V13 float64
V14 float64
V15 float64
V16 float64
V17 float64
V18 float64
V19 float64
V20 float64
V21 float64
V22 float64
V23 float64
V24 float64
V25 float64
V26 float64
V27 float64
V28 float64
Amount float64
Class int64

Todos los datos son de tipo float, exceptuando el target que es un integer.

Cantidad de nulos¶

cantidad_nulos
columna
Time 0
V1 0
V2 0
V3 0
V4 0
V5 0
V6 0
V7 0
V8 0
V9 0
V10 0
V11 0
V12 0
V13 0
V14 0
V15 0
V16 0
V17 0
V18 0
V19 0
V20 0
V21 0
V22 0
V23 0
V24 0
V25 0
V26 0
V27 0
V28 0
Amount 0
Class 0

El dataset no poseé valores faltantes.

Análisis de distribuciones¶

mean std min 25% 50% 75% max
Time 94813.86 47488.15 0.00 54201.50 84692.00 139320.50 172792.00
V1 0.00 1.96 -56.41 -0.92 0.02 1.32 2.45
V2 0.00 1.65 -72.72 -0.60 0.07 0.80 22.06
V3 -0.00 1.52 -48.33 -0.89 0.18 1.03 9.38
V4 0.00 1.42 -5.68 -0.85 -0.02 0.74 16.88
V5 0.00 1.38 -113.74 -0.69 -0.05 0.61 34.80
V6 0.00 1.33 -26.16 -0.77 -0.27 0.40 73.30
V7 -0.00 1.24 -43.56 -0.55 0.04 0.57 120.59
V8 0.00 1.19 -73.22 -0.21 0.02 0.33 20.01
V9 -0.00 1.10 -13.43 -0.64 -0.05 0.60 15.59
V10 0.00 1.09 -24.59 -0.54 -0.09 0.45 23.75
V11 0.00 1.02 -4.80 -0.76 -0.03 0.74 12.02
V12 -0.00 1.00 -18.68 -0.41 0.14 0.62 7.85
V13 0.00 1.00 -5.79 -0.65 -0.01 0.66 7.13
V14 0.00 0.96 -19.21 -0.43 0.05 0.49 10.53
V15 0.00 0.92 -4.50 -0.58 0.05 0.65 8.88
V16 0.00 0.88 -14.13 -0.47 0.07 0.52 17.32
V17 -0.00 0.85 -25.16 -0.48 -0.07 0.40 9.25
V18 0.00 0.84 -9.50 -0.50 -0.00 0.50 5.04
V19 0.00 0.81 -7.21 -0.46 0.00 0.46 5.59
V20 0.00 0.77 -54.50 -0.21 -0.06 0.13 39.42
V21 0.00 0.73 -34.83 -0.23 -0.03 0.19 27.20
V22 -0.00 0.73 -10.93 -0.54 0.01 0.53 10.50
V23 0.00 0.62 -44.81 -0.16 -0.01 0.15 22.53
V24 0.00 0.61 -2.84 -0.35 0.04 0.44 4.58
V25 0.00 0.52 -10.30 -0.32 0.02 0.35 7.52
V26 0.00 0.48 -2.60 -0.33 -0.05 0.24 3.52
V27 -0.00 0.40 -22.57 -0.07 0.00 0.09 31.61
V28 -0.00 0.33 -15.43 -0.05 0.01 0.08 33.85
Amount 88.35 250.12 0.00 5.60 22.00 77.16 25691.16
Class 0.00 0.04 0.00 0.00 0.00 0.00 1.00
  • Como era de esperar, estamos ante un problema muy desbalanceado respecto al target.
mean std min 25% 50% 75% max
Time 94813.86 47488.15 0.0 54201.5 84692.0 139320.50 172792.00
Amount 88.35 250.12 0.0 5.6 22.0 77.16 25691.16
  • La columna 'Amount' presenta outliers, 'Time' a simple vista, parecería que no.
  • La media es mas grande que el percentīl 0.75.
  • La columna Time almacena en su interior el momento temporal en el que fue efectuada una compra, comenzando en cero cuando se hizo la primer compra. A simple vista con los valores que arroja el método describe() podemos sacar la conclusion de que las transacciones no se realizaron de manera homogenea en el tiempo sin necesidad de hacer ningún gráfico.

Distribución del target¶

Problema super desbalanceado, se tendrá que hacer algo para contrarrestar esto en instancias de experimentación.

Distribución de montos¶

La columna amount presenta una distribución fuertemente asimétrica a izquierda.
Un amount de 365.0 ya deja por debajo el 95.0% del conjunto de datos.

Distribución del tiempo¶

El tiempo se distribuye de manera mas simétrica que los montos, pero en 2 grupos, sería interesante ver si esta clara división tiene algo que ver con los casos de fraude registrados.

Análisis de correlación¶

Distribución del monto en función del target¶

A priori, los fraudes tienen una mediana de monto mas baja de las transacciones que no son fraudulentas, pero con un desvío estándar y quantiles superiores.

Distribución de pagos fraudulentos en función del tiempo¶

  • Los fraudes se dan en un periodo de tiempo menor.
  • En 100k la cantidad de transacciones no fraudulentas cae, pero las que son fraude se mantienen. Sería interesante saber si esto corresponde al horario nocturno.

Fraudes en tiempo y monto¶

Text(0.5, 1.0, 'Transacciones Fraudulentas')

Podemos observar cierto patron en la distribucion de los pagos fraudulentos. Parece ser que en ciertos momentos se produce una escalada de la frecuencia de las transacciones en periodos de tiempo puntuales y con montos ascendentes. Esto nos da a pensar que las transacciones fraudulentas actuan realizando pagos con montos pequenos en principio e inmediatamente despues de encontrar la falla, realizan pagos incrementales de monto, en un muy corto periodo de tiempo.

Indicadores de negocio¶

El monto total de fraude es de $60127.97
Representa el 0.2% del monto total.

Distribución de fraude por categoría¶

  • La mitad de los fraudes se encuentran en montos bajos.
  • Los montos intermedios solo acumulan el 10% de los fraudes.
  • Como era de esperar, si bien la mayor cantidad de fraudes se encuentra en montos bajos (aprox. la mitad) la gran cantidad de fraudes en montos altos son los que mas impactan.

  • Los montos bajos de fraude podrían ser para buscar vulnerabilidades, y luego ingresa un fraude por monto alto. Podriamos analizar esta correlación.

Preguntas

  • ¿?

Conclusiones

  • Shape: (284807, 31).
  • No hay nulos.
  • Conjunto de datos altamente desbalanceado.
  • La columna Amount tiene muchos outliers.
  • El tiempo se distribuye de manera mas simétrica que los montos, pero en 2 grupos.
  • A priori, los fraudes tienen una mediana de monto mas baja de las transacciones que no son fraudulentas, pero con un desvío estándar y quantiles superiores.
  • Los fraudes se dan en un periodo de tiempo menor.
  • Los fraudes representan el 0.2% del monto total.
  • Como era de esperar, si bien la mayor cantidad de fraudes se encuentra en montos bajos (aprox. la mitad) la gran cantidad de fraudes en montos altos son los que mas impactan.

Trabajo futuro

  • Tratar de pasar el tiempo a horas concretas del dia para validar la teoría de fraudes nocturnos.
  • Los montos bajos de fraude podrían ser para buscar vulnerabilidades, y luego ingresa un fraude alto. Podriamos analizar esta correlación.